package greedyAlgorithm;

class SoluduplicateZeros {
    public static void duplicateZeros(int[] arr) {
        int dest=-1,cur=0;
        //找到复写0之后的最后一个元素
        for(cur=0;cur<arr.length;cur++){
            if(arr[cur]==0){
                dest+=2;
            }else{
                dest+=1;
            }
            if(dest>=arr.length-1){
                break;
            }
        }
        //边界情况
        if(dest==arr.length){
            arr[arr.length-1]=0;
            dest-=2;
            cur--;
        }
        //从后面往前面进行复写
        while(cur>=0){
            if(arr[cur]!=0){
                arr[dest]=arr[cur];
                cur--;
                dest--;
            }else{
                arr[dest--]=0;
                arr[dest--]=0;
                cur--;
            }
        }
        for(int x: arr){
            System.out.print(x+" ");
        }
    }

    public static void main(String[] args) {
        int[]arrays={1,0,2,3,0,4};
        duplicateZeros(arrays);
    }
}